Positional Encoding
Positional Encoding
개요
Positional Encoding(치 인코딩)은 자연 처리(NLP)야에서 사용되는 인지능 모델, 특히 트랜스포머(Transformer) 아키텍처에서 핵심적인 구성 요소 중입니다. 트랜포머는 순환 신경망(RNN)이나 컨볼루션 신경망(CNN)과 달리 시퀀스 데이터의 순서 정보를 내재적으로 처리하지 못하기 때문에, 입력 토큰의 상대적 또는 절대적인 위치를 모델에 알려주기 위해 Positional Encoding을 사용합니다.
이 문서에서는 Positional Encoding의 개념, 필요성, 구현 방식, 수학적 배경, 그리고 실제 적용 사례를 중심으로 설명합니다.
Positional Encoding의 필요성
시퀀스 순서 정보의 부재
트랜스포머 모델은 자기 주의(Self-Attention) 메커니즘을 기반으로 하며, 이 메커니즘은 입력 시퀀스의 모든 토큰을 동시에 처리합니다. 이로 인해 모델은 각 단어의 위치 정보를 알 수 없습니다. 예를 들어, 문장 "고양이가 쥐를 잡았다"와 "쥐가 고양이를 잡았다"는 단어의 순서만 다를 뿐 동일한 단어로 구성되어 있지만 의미는 정반대입니다. 따라서 어떤 단어가 어디에 위치하는지에 대한 정보는 의미 해석에 매우 중요합니다.
해결 방안: 위치 정보의 부여
이 문제를 해결하기 위해, 트랜스포머는 각 입력 토큰에 Positional Encoding 벡터를 더하여 위치 정보를 임베딩에 포함시킵니다. 이 벡터는 모델이 토큰의 순서를 인식할 수 있도록 도와줍니다.
Positional Encoding의 구현 방식
1. 고정된 사인-코사인 기반 인코딩
원래의 트랜스포머 논문 "Attention is All You Need" (Vaswani et al., 2017)에서는 주기 함수(사인과 코사인)를 사용한 고정된 Positional Encoding 방식을 제안했습니다. 이 방식은 다음과 같은 수식으로 정의됩니다:
[ PE_{(pos, 2i)} = [sin](/doc/%EC%88%98%ED%95%99/%ED%95%A8%EC%88%98/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98/sin)\left(\frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}}\right) ] [ PE_{(pos, 2i+1)} = [cos](/doc/%EC%88%98%ED%95%99/%ED%95%A8%EC%88%98/%EC%82%BC%EA%B0%81%ED%95%A8%EC%88%98/cos)\left(\frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}}\right) ]
여기서: - ( pos ): 토큰의 위치 (0, 1, 2, ..., 시퀀스 길이 - ) - ( i ): 임베딩 벡터 내 차원 인덱스 (0부터 ( d_{\text{model}}/2 - 1 )까지) - ( d_{\text{model}} ): 토큰 임베딩의 차원 수 (예: 512)
이 방식의 핵심 아이디어는: - 각 위치에 대해 고유한 주기성을 가진 사인/코사인 함수를 사용해 위치 정보를 표현 - 서로 다른 주파수를 갖는 함수들이 조합되어, 모델이 상대적 위치도 학습할 수 있음 - 고정된 함수이므로 학습 파라미터가 아님 (non-trainable)
2. 학습 가능한 Positional Embedding
현대의 트랜스포머 변형 모델(예: BERT, RoBERTa 등)에서는 고정된 사인-코사인 인코딩 대신, 학습 가능한 위치 임베딩(Learnable Positional Embeddings)을 사용합니다. 이 방식은 다음과 같은 특징을 가집니다:
- 위치 인코딩 벡터를 모델의 파라미터로 선언
- 역전파를 통해 데이터에 맞게 최적화됨
- 더 유연한 표현이 가능하지만, 학습 데이터의 최대 길이를 초과하는 시퀀스에 취약할 수 있음
Positional Encoding의 특징
| 특징 | 설명 |
|---|---|
| 비가변성(고정형) | 사인-코사인 방식은 사전 정의된 함수이므로 변경되지 않음 |
| 상대적 위치 인식 가능 | 주기 함수의 성질 덕분에 두 위치 간의 차이도 모델이 추론 가능 |
| 확장성 | 고정형 인코딩은 이론적으로 무한한 길이의 시퀀스를 처리할 수 있음 |
| 차원 일치 | Positional Encoding 벡터는 토큰 임베딩과 동일한 차원 ( d_{\text{model}} )을 가져야 함 |
수학적 직관
Positional Encoding의 설계는 다음과 같은 수학적 직관에 기반합니다:
- 각 차원은 서로 다른 주파수를 가지므로, 위치 정보가 중복되지 않고 표현됨
- 인접한 위치는 유사한 인코딩 값을 가지며, 멀리 떨어진 위치는 다른 값을 가짐
- ( \sin(a + b) )와 ( \cos(a + b) )의 공식을 통해, 상대적 위치 ( k ) 에 대한 정보를 ( PE_{pos+k} )가 ( PE_{pos} )의 선형 조합으로 표현될 수 있음
이로 인해 모델은 "3칸 뒤의 단어"와 같은 상대적 위치 관계를 학습할 수 있습니다.
실제 예시
예를 들어, ( d_{\text{model}} = 4 ), 위치 ( pos = 0 )일 때:
- ( i = 0 ): ( \sin0 / 10000^{0}) = \sin(0) = 0 )
- ( i = 0 ): ( \cos(0 / 10000^{0}) = \cos(0) = 1 )
- ( i = 1 ): ( \sin(0 / 10000^{2/4}) = \sin(0) = 0 )
- ( i = 1 ): ( \cos(0 / 10000^{2/4}) = \cos(0) = 1 )
따라서 ( PE_0 = [0, 1, 0, 1] )
위치 ( pos = 1 )일 때는 각 항에 ( \sin(1), \cos(1), \sin(1/100), \cos(1/100) ) 등이 들어가며, 고유한 벡터가 생성됩니다.
참고 자료 및 관련 문서
- 원본 논문: Vaswani, A. et al. (2017). "Attention is All You Need"
- BERT 모델: Devlin, J. et al. (2018). "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"
- 관련 개념:
- Word Embedding
- Self-Attention Mechanism
- Transformer Architecture
Positional Encoding은 트랜스포머 모델이 언어의 순차적 구조를 이해할 수 있도록 하는 기초적이면서도 필수적인 요소입니다. 고정형과 학습형 방식 각각의 장단점이 있으며, 모델 설계 시 목적과 데이터 특성에 따라 적절한 방식을 선택하는 것이 중요합니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.